package org.jeecg.modules.zhongche.plc.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

import java.util.List;

/**
 * 通过TCP对接plc设备配置
 */

@Data
@Configuration
@ConfigurationProperties(prefix = "spring.plc")
public class PLCProperties {

    /**
     * PLC设备列表
     */
    private List<Device> devices;

    @Data
    public static class Device {

        /**
         * 一个设备可以包含多个数据块
         */
        List<DataBlock> dataBlocks;
        /**
         * PLC设备IP地址
         */
        private String ip;
        /**
         * PLC设备端口
         */
        private Integer port;
        /**
         * 连接超时，单位：毫秒<br/>
         * 默认5000ms
         */
        private Integer connectTimeout = 5000;
        /**
         * 默认0
         */
        private Integer rack = 0;
        /**
         * 默认1
         */
        private Integer slot = 1;

        /**
         * 是否轮询、重复读取数据，默认：true
         */
        private Boolean readRepeat = true;

        /**
         * 数据读取间隔，单位毫秒,默认100ms
         */
        private Integer readRepeatInterval = 100;
    }

    @Data
    public static class DataBlock {

        /**
         * PLC数据块编号
         */
        private Integer databaseNumber;

        /**
         * 偏移量 默认为0
         */
        private Integer offset = 0;

        /**
         * 是否轮询、重复读取数据，默认：true
         */
        private boolean readRepeat = true;

        /**
         * 数据读取间隔，单位毫秒,默认100ms
         */
        private Integer readRepeatInterval = 100;

        /**
         * 数据对应的实体类对象全路径，数据实体配置数据地址偏移量、长度等相关信息
         */
        private String entityClassName;
    }


}
